package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.SysCourt;

/**
 * 法院管理 服务层
 *
 * @author ruoyi
 */
public interface ISysCourtService
{
    /**
     * 查询法院管理数据
     *
     * @param Court 法院信息
     * @return 法院信息集合
     */
    public List<SysCourt> selectCourtList(SysCourt Court);

    /**
     * 构建前端所需要树结构
     *
     * @param Courts 法院列表
     * @return 树结构列表
     */
    public List<SysCourt> buildCourtTree(List<SysCourt> Courts);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param Courts 法院列表
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildCourtTreeSelect(List<SysCourt> Courts);

    /**
     * 根据角色ID查询法院树信息
     *
     * @param roleId 角色ID
     * @return 选中法院列表
     */
    public List<Long> selectCourtListByRoleId(Long roleId);

    /**
     * 根据法院ID查询信息
     *
     * @param CourtId 法院ID
     * @return 法院信息
     */
    public SysCourt selectCourtById(Long CourtId);

    /**
     * 根据ID查询所有子法院（正常状态）
     *
     * @param CourtId 法院ID
     * @return 子法院数
     */
    public int selectNormalChildrenCourtById(Long CourtId);

    /**
     * 是否存在法院子节点
     *
     * @param CourtId 法院ID
     * @return 结果
     */
    public boolean hasChildByCourtId(Long CourtId);

    /**
     * 查询法院是否存在用户
     *
     * @param CourtId 法院ID
     * @return 结果 true 存在 false 不存在
     */
    public boolean checkCourtExistUser(Long CourtId);

    /**
     * 校验法院名称是否唯一
     *
     * @param Court 法院信息
     * @return 结果
     */
    public String checkCourtNameUnique(SysCourt Court);

    /**
     * 校验法院是否有数据权限
     *
     * @param CourtId 法院id
     */
    public void checkCourtDataScope(Long CourtId);

    /**
     * 新增保存法院信息
     *
     * @param Court 法院信息
     * @return 结果
     */
    public int insertCourt(SysCourt Court);

    /**
     * 修改保存法院信息
     *
     * @param Court 法院信息
     * @return 结果
     */
    public int updateCourt(SysCourt Court);

    /**
     * 删除法院管理信息
     *
     * @param CourtId 法院ID
     * @return 结果
     */
    public int deleteCourtById(Long CourtId);
}
